home *** CD-ROM | disk | FTP | other *** search
- .include 'tao'
- .include 'ad709/tinygl/gl'
-
- .define RTLD_NOW 2
- .define RTLD_GLOBAL $100
- .define NUM_GL_FUNCS 79
- .define NUM_GLUT_FUNCS 24
- .define NUM_GLU_FUNCS 2
-
-
- tool 'ami/lib/ad709/tinygl/deinit', VP
- ent (pointer glFuncs, pointer libHandle : -)
- qcall lang/cc/bin/dynamic/dlclose, (libHandle : i~)
- qcall lib/free, (glFuncs : -)
- ret ()
- entend
- toolend
-
-
-
- tool 'ami/lib/ad709/tinygl/init',VP
- ent (int whichLib : pointer[], pointer)
- regdef pointer libHandle
- regdef pointer [funcsTable]
- regdef pointer funcsPtr
- regdef pointer currentFunc
- regdef pointer names
- regdef pointer err
- regdef pointer __stderr
- regdef pointer lib
- regdef int i
- regdef int nameLength
- regdef int numFunctions
-
- stderr __stderr
-
- if whichLib == GL_LIB
- cpy.p gl_lib_name, lib
- cpy NUM_GL_FUNCS, numFunctions
- cpy.p gl_function_names, names
- elseif whichLib == GLUT_LIB
- cpy.p glut_lib_name, lib
- cpy NUM_GLUT_FUNCS, numFunctions
- cpy.p glut_function_names, names
- elseif whichLib == GLU_LIB
- cpy.p glu_lib_name, lib
- cpy NUM_GLU_FUNCS, numFunctions
- cpy.p glu_function_names, names
- else
- fprintf __stderr, "Incorrect library binding request\n"
- ret (NULL, NULL)
- endif
-
- qcall lang/cc/bin/dynamic/dlopen, (lib, RTLD_NOW + RTLD_GLOBAL : libHandle)
- if libHandle == 0
- qcall lang/cc/bin/dynamic/dlerror, (- : err)
- fprintf __stderr, "%s\n", err
- ret (NULL, NULL)
- endif
-
- qcall lib/malloc, (4*numFunctions : funcsTable)
- if.p funcsTable == NULL
- fprintf __stderr, "Not enough memory for TinyGL function table.\n"
- endif
-
- cpy.p funcsTable, funcsPtr
- clr i
- repeat
- qcall lang/cc/bin/dynamic/dlsym, (libHandle, names : currentFunc)
- qcall lang/cc/bin/dynamic/dlerror, (- : err)
- if err != 0
- fprintf __stderr, "%s : %s %s\n", err, names, lib
- ret (NULL, NULL)
- endif
- cpy.p currentFunc, [funcsTable]
- add 4, currentFunc
- add 4, funcsTable
- qcall lib/strlen, (names : nameLength)
- add nameLength+1, names
- inc i
- until i == numFunctions
- cpy.p funcsPtr, funcsTable
-
- ret (funcsTable, libHandle)
- entend
-
- data
-
- gl_lib_name:
- dc.b 'ami/lang/cc/lib/ad709/libTinyGL.so', 0
-
- glut_lib_name:
- dc.b 'ami/lang/cc/lib/ad709/libTinyGLUT.so', 0
-
- glu_lib_name:
- dc.b 'ami/lang/cc/lib/ad709/libTinyGLU.so', 0
-
-
- gl_function_names:
- dc.b 'glEnable',0
- dc.b 'glDisable',0
- dc.b 'glShadeModel',0
- dc.b 'glCullFace',0
- dc.b 'glPolygonMode',0
- dc.b 'glBegin',0
- dc.b 'glEnd',0
- dc.b 'glVertex2f',0
- dc.b 'glTexCoord2f',0
- dc.b 'glTexCoord2fv',0
- dc.b 'glVertex3f',0
- dc.b 'glVertex3fv',0
- dc.b 'glColor3f',0
- dc.b 'glColor3fv',0
- dc.b 'glNormal3f',0
- dc.b 'glNormal3fv',0
- dc.b 'glVertex4f',0
- dc.b 'glColor4f',0
- dc.b 'glColor4fv',0
- dc.b 'glTexCoord4f',0
- dc.b 'glEdgeFlag',0
- dc.b 'glMatrixMode',0
- dc.b 'glLoadMatrixf',0
- dc.b 'glLoadIdentity',0
- dc.b 'glMultMatrixf',0
- dc.b 'glPushMatrix',0
- dc.b 'glPopMatrix',0
- dc.b 'glRotatef',0
- dc.b 'glTranslatef',0
- dc.b 'glScalef',0
- dc.b 'glViewport',0
- dc.b 'glFrustum',0
- dc.b 'glGenLists',0
- dc.b 'glIsList',0
- dc.b 'glNewList',0
- dc.b 'glEndList',0
- dc.b 'glCallList',0
- dc.b 'glClear',0
- dc.b 'glClearColor',0
- dc.b 'glClearDepth',0
- dc.b 'glRenderMode',0
- dc.b 'glSelectBuffer',0
- dc.b 'glInitNames',0
- dc.b 'glPushName',0
- dc.b 'glPopName',0
- dc.b 'glLoadName',0
- dc.b 'glGenTextures',0
- dc.b 'glDeleteTextures',0
- dc.b 'glBindTexture',0
- dc.b 'glTexImage2D',0
- dc.b 'glTexEnvi',0
- dc.b 'glTexParameteri',0
- dc.b 'glPixelStorei',0
- dc.b 'glMaterialfv',0
- dc.b 'glMaterialf',0
- dc.b 'glColorMaterial',0
- dc.b 'glLightfv',0
- dc.b 'glLightf',0
- dc.b 'glLightModeli',0
- dc.b 'glLightModelfv',0
- dc.b 'glFlush',0
- dc.b 'glHint',0
- dc.b 'glGetIntegerv',0
- dc.b 'glGetFloatv',0
- dc.b 'glGetString',0
- dc.b 'glFrontFace',0
- dc.b 'glEnableClientState',0
- dc.b 'glDisableClientState',0
- dc.b 'glArrayElement',0
- dc.b 'glVertexPointer',0
- dc.b 'glColorPointer',0
- dc.b 'glNormalPointer',0
- dc.b 'glTexCoordPointer',0
- dc.b 'glPolygonOffset',0
- dc.b 'iglCreateContext',0
- dc.b 'iglDestroyContext',0
- dc.b 'iglMakeCurrent',0
- dc.b 'iglResizeContext',0
- dc.b 'iglGetPixmap',0
- dc.b 'glBlendFunc',0
-
- glut_function_names:
- dc.b 'glutInit',0
- dc.b 'glutInitWindowPosition',0
- dc.b 'glutInitWindowSize',0
- dc.b 'glutCreateWindow',0
- dc.b 'glutFullScreen',0
- dc.b 'glutSetWindow',0
- dc.b 'glutGetWindow',0
- dc.b 'glutDestroyWindow',0
- dc.b 'glutSwapBuffers',0
- dc.b 'glutMainLoop',0
- dc.b 'glutPostRedisplay',0
- dc.b 'glutDisplayFunc',0
- dc.b 'glutReshapeFunc',0
- dc.b 'glutIdleFunc',0
- dc.b 'glutKeyboardFunc',0
- dc.b 'glutMouseFunc',0
- dc.b 'glutMotionFunc',0
- dc.b 'glutPassiveMotionFunc',0
- dc.b 'glutEntryFunc',0
- dc.b 'glutShowWindow',0
- dc.b 'glutHideWindow',0
- dc.b 'glutPositionWindow',0
- dc.b 'glutReshapeWindow',0
- dc.b 'glutGet',0
- dc.b 'glutKeyboardUpFunc',0
-
- glu_function_names:
- dc.b 'gluLookAt',0
- dc.b 'gluPerspective',0
-
-
- toolend
-